package com.qk.controller;

import com.qk.anno.Log;
import com.qk.common.PageResult;
import com.qk.common.Result;
import com.qk.entity.Course;


import com.qk.service.CourseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@Slf4j
@RequestMapping("/courses")

@RestController
public class CourseController {
    @Autowired
    private CourseService courseService;

    /**
     * 查询所有课程
     */
    @GetMapping("/list")
    public Result listAll(){
        log.info("查询所有课程");
        List<Course> courseList = courseService.selectAll();
        return Result.success(courseList);
    }

    /**
     * 新增课程
     */
    @Log
    @PostMapping
    public Result add(@RequestBody Course  course){
    System.out.println("新增课程" +course);
    courseService.add(course);
    return Result.success();
}
    /**
     * 删除课程
     */
    @Log
    @DeleteMapping("{id}")
    public Result delete(@PathVariable Integer id){
        log.info("删除课程：{}",id);
        courseService.deleteById(id);
        return Result.success();
    }
    /**
     * 修改课程
     */
    @Log
    @PutMapping
    public Result update(@RequestBody Course course){
        log.info("修改课程：{}",course);
        courseService.update(course);
        return Result.success();
    }
    /**
     * 查询课程
     */
    @GetMapping("{id}")
    public Result getById(@PathVariable Integer id){
        log.info("查询课程：id={}",id);
        Course course = courseService.getById(id);
        return Result.success(course);
    }
    /**
     * 查询课程列表
     */
    @GetMapping
    public Result list(String name ,Integer subject,Integer price,Integer target,String description,
                       @RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize){
        log.info("查询课程列表：name={},subject={},price={},target={},description={},page={},pageSize={}",name,subject,price,target,description,page,pageSize);
        //调用service,分页查询
        PageResult<Course> pageResult = courseService.list(name, subject, price, target, description, page, pageSize);
        return Result.success(pageResult);
    }

    /**
     * 根据学科查询
     */
    @GetMapping("/subject/{subject}")
    public Result listBySubject(@PathVariable Integer subject){
        log.info("根据学科查询：subject={}",subject);
        List<Course> courseList = courseService.listBySubject(subject);
        return Result.success(courseList);
    }
}
